#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=50000+10;
int a[maxn];
int ne[1000010]={0};
int p[1000010]={0};
int s[maxn];
int n,m;
struct T{
    int l,r,id;
    bool operator<(const T&c)const{
        if(l==c.l)
            return r<c.r;
        return l<c.l;
    }
}A[200010];
int ans[200010];
inline void add(int x,int p){
    while(x<=n){
        s[x]+=p;
        x+=x&(-x);
    }
}
inline int sum(int x){
    int tmp=0;
    while(x){
        tmp+=s[x];
        x-=x&(-x);
    }
    return tmp;
}
int main(){
    freopen("diff.in","r",stdin);
    freopen("diff.out","w",stdout);
    int mx=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]),mx=max(mx,a[i]);
    for(int i=n;i>=1;i--)
        ne[i]=p[a[i]],p[a[i]]=i;
    for(int i=0;i<=mx;i++)
        if(p[i])
            add(p[i],1);
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
        scanf("%d %d",&A[i].l,&A[i].r),A[i].id=i;
    sort(A+1,A+m+1);
    int l=1;
    for(int i=1;i<=m;i++){
        while(l<A[i].l){
            if(ne[l])
                add(ne[l],1);
            l++;
        }
        ans[A[i].id]=sum(A[i].r)-sum(A[i].l-1);
    }
    for(int i=1;i<=m;i++)
        printf("%d\n",ans[i]);
return 0;
}
